package com.jielihaofeng.netty.futurepromise;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.*;

/**
 * @author Johnnie Wind
 * @description jdk future
 * @date 2021/11/10 09:44
 */
@Slf4j
public class TestJdkFuture {

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        // 1. 线程池
        ExecutorService service = Executors.newFixedThreadPool(2);
        // 2. 提交任务
        Future<Integer> future = service.submit(new Callable<Integer>() {
            @Override
            public Integer call() throws InterruptedException {
                log.debug("并行计算");
                Thread.sleep(1000);
                return 50;
            }
        });
        // 3. 主线程通过 future 来获取结果
        log.debug("等待结果");
        // get()会阻塞等待任务结果
        log.debug("结果是 {}",future.get());
    }
}

// future 其实就是线程间传递数据的一个容器，是被动的，不能手动设值，promise可以主动设值